var MesAdresses = {
    
    init: function(SubGrid) {
        
        /***********************************************************************
         * Variables
         **********************************************************************/
        var TableAdresses = SubGrid.find('table#liste_adresses'),
        LinkCreate = TableAdresses.find('a.create'),
        LinkUpdate = TableAdresses.find('a.update'),
        LinkDelete = TableAdresses.find('a.delete'),
        EditAdresse = SubGrid.find('div#EditAdresse'),
        DeleteAdresse = SubGrid.find('div#DeleteAdresse'),
        urlDelete;
        
        /***********************************************************************
         * Forms
         **********************************************************************/
        EditAdresse.dialog({
            autoOpen: false,
            resizable: false,
            width: 500,
            height: 400,
            modal: true,
            buttons: {
                "Valider": function() {
                    var formData = {};
                    var ADRESSE_ID = EditAdresse.find('input[type=hidden]#ADRESSE_ID').val();
                    var SOCIETE_ID = EditAdresse.find('input[type=hidden]#SOCIETE_ID').val();
                    var ADRESSE_NUMVOIE = EditAdresse.find('input[type=text]#ADRESSE_NUMVOIE').val();
                    var ADRESSE_NOMVOIE = EditAdresse.find('input[type=text]#ADRESSE_NOMVOIE').val();
                    var ADRESSE_COMPLEMENT = EditAdresse.find('input[type=text]#ADRESSE_COMPLEMENT').val();
                    var ADRESSE_CODEPOSTAL = EditAdresse.find('input[type=text]#ADRESSE_CODEPOSTAL').val();
                    var ADRESSE_VILLE = EditAdresse.find('input[type=text]#ADRESSE_VILLE').val();
                    var ADRESSE_PAYS = EditAdresse.find('input[type=text]#ADRESSE_PAYS').val();
                    var url = EditAdresse.find('form').attr('action');
                    
                    if (ADRESSE_ID != '') {
                        formData.ADRESSE_ID = ADRESSE_ID;
                    }
                    formData.SOCIETE_ID = SOCIETE_ID;
                    formData.ADRESSE_NUMVOIE = ADRESSE_NUMVOIE;
                    formData.ADRESSE_NOMVOIE = ADRESSE_NOMVOIE;
                    formData.ADRESSE_COMPLEMENT = ADRESSE_COMPLEMENT;
                    formData.ADRESSE_CODEPOSTAL = ADRESSE_CODEPOSTAL;
                    formData.ADRESSE_VILLE = ADRESSE_VILLE;
                    formData.ADRESSE_PAYS = ADRESSE_PAYS;
                    
                    $.ajax({
                        type: "GET",
                        url: url,
                        data: formData,
                        async: false,
                        dataType: 'json',
                        success: function(adresses){
                            UpdateList(adresses);
                            EditAdresse.dialog('close');
                        }
                    });
                },
                Cancel: function() {
                    EditAdresse.dialog('close');
                }
            },
            close: function() {
                EditAdresse.html('');
            }
        });
        
        DeleteAdresse.dialog({
            autoOpen: false,
            resizable: false,
            width: 'auto',
            height: 'auto',
            modal: true,
            buttons: {
                "Valider": function() {
                    $.ajax({
                        type: "GET",
                        url: urlDelete,
                        async: true,
                        dataType: 'json',
                        success: function(fournisseurs){
                            UpdateList(fournisseurs);
                            DeleteAdresse.dialog('close');
                        }
                    });
                },
                Cancel: function() {
                    DeleteAdresse.dialog('close');
                }
            }
        });
        
        /***********************************************************************
         * Methods on events
         **********************************************************************/
        function OnCreate(event, element) {
            event.preventDefault();
            var url = $(element).attr('href');
            EditAdresse.dialog('open').load(url);
        }
        
        function OnUpdate(event, element) {
            event.preventDefault();
            var url = $(element).attr('href');
            EditAdresse.dialog('open').load(url);
        }
        
        function OnDelete(event, element) {
            event.preventDefault();
            urlDelete = $(element).attr('href');
            DeleteAdresse.dialog('open');
        }
    
        function UpdateList(adresses) {
            var table = $('table#liste_adresses'),
            tbody = table.find('tbody'),
            base_url = $('input[type=hidden]#base_url').val();
        
            tbody.empty();

            $.each(adresses, function (index, adresse){
                var _update = '<a href="' + base_url + 'adresse/update?ADRESSE_ID=' + adresse.ADRESSE_ID + '&SOCIETE_ID=' + adresse.SOCIETE_ID + '" class="btn update">Mettre à jour</a>';
                var _delete = '<a href="' + base_url + 'adresse/delete?ADRESSE_ID=' + adresse.ADRESSE_ID + '&SOCIETE_ID=' + adresse.SOCIETE_ID + '" class="btn delete">Supprimer</a>';

                var tr = '<tr id="' + adresse.ADRESSE_ID + '">';
                tr = tr + '<td>' + adresse.ADRESSE_ID + '</td>';
                tr = tr + '<td>' + adresse.ADRESSE_NUMVOIE + '</td>';
                tr = tr + '<td>' + adresse.ADRESSE_NOMVOIE + '</td>';
                tr = tr + '<td>' + adresse.ADRESSE_CODEPOSTAL + '</td>';
                tr = tr + '<td>' + adresse.ADRESSE_VILLE + '</td>';
                tr = tr + '<td>' + adresse.ADRESSE_PAYS + '</td>';
                tr = tr + '<td>' + _update + '' + _delete + '</td>';
                tr = tr + '</tr>';

                table.append(tr);
            });
        
            table.find('a.create').click(function(event){ OnCreate(event, $(this)); });
            table.find('a.update').click(function(event){ OnUpdate(event, $(this)); });
            table.find('a.delete').click(function(event){ OnDelete(event, $(this)); });
        }
        
        /***********************************************************************
         * Events
         **********************************************************************/
        LinkCreate.on('click', function(event) {
            OnCreate(event, $(this));
        });
        
        LinkUpdate.on('click', function(event) {
            OnUpdate(event, $(this));
        });
        
        LinkDelete.on('click', function(event) {
            OnDelete(event, $(this));
        });
        
    }
    
};